/*
* 修改记录
* 2013-10-31 参数文件支持多个配置
*/
package com.hundsun.jresplus.beans.config;
import java.io.IOException;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ResourceLoaderAware;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.util.StringUtils;
import com.hundsun.jresplus.common.util.StringUtil;
/**
*
* @author LeoHu copy sagahl
*
*/
public class PropertyPlaceholderConfigurer extends
org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
implements ResourceLoaderAware {
private static Logger logger = LoggerFactory
.getLogger(PropertyPlaceholderConfigurer.class);
private static Set<Object> propKeySet = new HashSet<Object>();
public static String CONFIG_LOCATION = "JresConfigLocation";
protected void loadProperties(Properties properties) throws IOException {
super.loadProperties(properties);
if (properties.containsKey("system.dev.mode")
&& "true".equals(properties.get("system.dev.mode"))) {
properties.put("negate.system.dev.mode", "false");
} else {
properties.put("negate.system.dev.mode", "true");
}
logLoadedProperties(properties);
}
private void logLoadedProperties(Properties properties) {
Set<Object> keys = properties.keySet();
Properties props = new Properties();
for (Object key : keys) {
if (propKeySet.contains(key)) {
continue;
}
props.put(key, properties.get(key));
propKeySet.add(key);
}
logger.info("Loaded properties:{}", props);
}
public Properties mergeProperties() throws IOException {
return super.mergeProperties();
}
public void setResourceLoader(ResourceLoader resourceLoader) {
String config = System.getProperty(CONFIG_LOCATION);
String[] configs = null;
if (StringUtil.isNotBlank(config)) {
configs = StringUtils.tokenizeToStringArray(config, ",; \t\n");
}
if (configs != null) {
Resource[] resources = new Resource[configs.length];
for (int n = 0; n < resources.length; n++) {
resources[n] = resourceLoader.getResource(configs[n]);
}
super.setLocations(resources);
} else {
super.setLocation(resourceLoader.getResource("classpath:"
+ System.getProperty(CONFIG_LOCATION)));
}
}
}